Solid state disk (SSD) and in-memory databases are two ways of speeding up database analytic operations. A set of properties dubbed ACID (atomicity, consistency, isolation, durability) ensure that database transactions are processed reliably. Database software confirms that an entire transaction is written back to permanent (disk) storage before indicating that the transaction is complete. This prevents a partial transaction from changing the database in the event of a hardware failure.
Durability is problematic with both in-memory and SSD databases. Completed transactions must still be written to disk for an in-memory database since memory is volatile. SSD drives suffer from a problem called wear-out and only support a limited number of writes during their lifetime. It is advantageous to batch database updates to minimize the number of writes and thus extend the life of the SSD.
Keeping these pending updates in system memory requires that the memory be made fault tolerant. There is a range of fault tolerance options related to the type of faults that can occur. Error correction code in memory allows recovery from soft error and DRAM failures. Mirrored memory can tolerate entire DIMM or memory channel failures. To tolerate processor or system failures, a redundant copy of modified memory may be kept on a separate system in a computer cluster.